import { plugin, Messagetype, segment } from 'alemon'
import db from '../../db/sqlite/config.js'
import { QueryTypes } from 'sequelize'

export class K_gjc extends plugin {
  constructor() {
    super({
      dsc: '发送消息',
      priority: 19999,
      rule: [
        {
          reg: /(.*)/,
          fnc: 'gjc'
        }
      ]
    })
  }
  async gjc(e: Messagetype) {
    const eventType = e.eventId.split(':')[0]
    // 只允许私域消息
    if (eventType !== 'MESSAGE_CREATE') {
      return
    }

    if (!e.msg.content) {
      return
    }

    const data = await db
      .query('select * from k_gjc where guild = ? and key = ? ', {
        replacements: [e.msg.guild_id, e.msg.content],
        type: QueryTypes.SELECT
      })
      .catch(err => err.parent)

    if ('errno' in data) {
      return false
    }

    if (data[0]) {
      const gjc = JSON.parse(data[0].value) as {
        content?: string
        image: typeof e.msg.attachments
      }

      if (gjc.content) {
        await e.reply('"."已经转换为"。",请注意区分！\n\n' + convertPunctuation(gjc.content))
      }

      if (gjc.image && gjc.image.length !== 0) {
        gjc.image.forEach(async item => {
          await e.reply(segment.image('https://' + item.url))
        })
      }

      return true
    }
  }
}

// 修改标点符号
function convertPunctuation(text: string) {
  const punctuationMap = {
    '.': '。'
    // ',': '，',
    // '?': '？',
    // '!': '！',
    // ':': '：',
    // ';': '；',
    // '"': '“',
    // "'": '‘',
    // '(': '（',
    // ')': '）',
    // '[': '【',
    // ']': '】',
    // '{': '｛',
    // '}': '｝',
    // '<': '《',
    // '>': '》',
    // '-': '－',
    // '_': '＿',
    // '/': '／',
    // '\\': '＼',
    // '|': '｜',
    // '@': '＠',
    // '#': '＃',
    // '$': '＄',
    // '%': '％',
    // '^': '＾',
    // '&': '＆',
    // '*': '＊',
    // '+': '＋',
    // '=': '＝',
    // '~': '～',
    // '`': '｀'
  }

  let convertedText = ''
  for (let i = 0; i < text.length; i++) {
    const char = text[i]
    if (punctuationMap[char]) {
      convertedText += punctuationMap[char]
    } else {
      convertedText += char
    }
  }

  return convertedText
}
